#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char *str)
{
    assert(str!=NULL);
    size_t cnt=0;
    while(*str!='\0')
    {
        cnt++;
        str++;
    }
    return cnt;
}
char *my_strcpy(char *dest,const char *src)
{
    char *ret=dest;
    assert(dest&&src);
    while(*dest++=*src++);
    return ret;
} 
char *my_stract(char *dest,const char *src)
{
    assert(dest&&src);
    char *ret=dest;
    while(*dest)
    {
        dest++;
    }
    while(*dest++=*src++);
    return ret;
}
int my_strcmp(const char *str1,const char *str2)
{
    assert(str1&&str2);
    while(*str1==*str2)
    {
        if(*str1=='\0')
            return 0;
        str1++;
        str2++;
    }
    /*if(*str1>*str2)
        return 1;
    else
        return -1;*/
        return *str1-*str2;
}
char* my_strstr(const char *str1,const char *str2)
{
    assert(str1&&str2);
    if(*str2=='\0')
        return str1;
    const char *s1=NULL;
    const char *s2=NULL;
    const char *cp=str1;
    while(*cp)
    {
        s1=cp;
        s2=str2;
        while(*s1!='\0'&&*s2!='\0'&&*s1==*s2)
        {
            s1++;
            s2++;
            
        }
        if(*s2=='\0')
            return (char*)cp;
        cp++;
    }
    return NULL;
}
char *strstr(const char *str1,const char *str2)
{
    assert(str1&&str2);
    if(*str2=='\0')
        return str1;
    const char *s1=NULL;
    const char *s2=NULL;
    const char *cp=str1;
    while(*cp)
    {
        s1=cp;
        s2=str2;
        while(*s1!='\0'&&*s2!='\0'&&*s1==*s2)
        {
            s1++;
            s2++;
        }
        if(*s2=='\0')
            return (char*)cp;
        cp++;
    }
    return NULL;
}
int main()
{
    char s[200];
    printf("%s",my_strcpy(s,"htfhtfhnffgr"));
    return 0;
}